iT邦幫忙

2022 iThome 鐵人賽

DAY 9
0

今天分享程式開發過程中,跟 debug 息息相關的 logging。

一開始在程式初學時,我們多半會使用 print, console.log 等指令,把我們想知道的變數狀態輸出在螢幕上,藉此來確認程式跟我們預期的執行結果是否一致?

除了列印變數狀態之外,大概還有一些用來確認是否進入 function?for loop 執行圈數?if-else 執行分支結果?這些都是幫助我們判斷程式執行過程的輔助資訊,而再更進階一點就是靠 debugger 來控制程式執行,可以選擇一次執行一行指令、跳進函式內部執行、跳出目前執行迴圈等,可以清楚地了解程式的執行狀況。

但以上的方式有一個最大的問題就是沒辦法把紀錄保存下來,程式執行完就沒了。解決方式是把 print 到螢幕的 stdout 輸出流重新導向到檔案,又或者同時輸出到 stdout 和 file。

比較常見的程式執行的紀錄大多會包含幾個要素

  • 執行時間
  • 執行的函式或 pid
  • 紀錄層級: debug, info, warn, error, fatal [^1]
  • 訊息

logging 的需求可能會因為專案的架構而變得更加龐大複雜,可能會拆分成不同類別的 log
另外也有避免 log 容量佔用太多硬碟空間,可以設定 log 保留的時間,或是 log 訊息的數量上限。
或者也可以設定 log 按日、周拆分

以上,logging 進階的應用還有很多,簡短分享一下

[1]: RFC 5424: The Syslog Protocol


上一篇
捌。認識串流
下一篇
拾。2022 在 Linux安裝軟體的幾種方式
系列文
程式小萌新的學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言